package cn.iocoder.yudao.framework.redis.config;

import org.springframework.data.redis.connection.Message;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.listener.KeyExpirationEventMessageListener;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;

import javax.annotation.Resource;
import java.time.LocalDateTime;

public class RedisEventMessageListener extends KeyExpirationEventMessageListener {

    @Resource
    private RedisConnectionFactory factory;
    @Resource
    private YudaoRedisAutoConfiguration redisAutoConfiguration;


    public RedisEventMessageListener(RedisMessageListenerContainer listenerContainer) {
        super(listenerContainer);
    }

    @Override
    protected void doHandleMessage(Message message) {
        // 这个就是过期的key ，过期后，也就是事件触发后对应的value是拿不到的。
        // 这里实现业务逻辑，如果是服务器集群的话需要使用分布式锁进行抢占执行。
//        String key = message.toString();
//        System.out.println("key = " + key);
//        System.out.println("end = " + LocalDateTime.now());
//
//        //判断是否是设备的key
//        if (key.contains("deviceIpNum_")){
//            RedisTemplate<String, Object> template = redisAutoConfiguration.redisTemplate(factory);
//            //key是sn号
//            key=key.replace("deviceIpNum_","");
//            template.opsForValue().set("deviceIpTask_"+key,key);
//        }
    }
}


